The process of rendering two-dimensional images from three-dimensional scenes is commonly referred to as image processing. As the modern computer industry evolves image processing evolves as well. One particular goal in the evolution of image processing is to make two-dimensional simulations or renditions of three-dimensional scenes as realistic as possible. One limitation of rendering realistic images is that modern monitors display images through the use of pixels.
A pixel is the smallest area of space which can be illuminated on a monitor. Most modern computer monitors will use a combination of hundreds of thousands or millions of pixels to compose the entire display or rendered scene. The individual pixels are arranged in a grid pattern and collectively cover the entire viewing area of the monitor. Each individual pixel may be illuminated to render a final picture for viewing.
One technique for rendering a real world three-dimensional scene onto a two-dimensional monitor using pixels is called rasterization. Rasterization is the process of taking a two-dimensional image represented in vector format (mathematical representations of geometric objects within a scene) and converting the image into individual pixels for display on the monitor. Rasterization is effective at rendering graphics quickly and using relatively low amounts of computational power; however, rasterization suffers from several drawbacks. For example, rasterization often suffers from a lack of realism because it is not based on the physical properties of light, rather rasterization is based on the shape of three-dimensional geometric objects in a scene projected onto a two dimensional plane. Furthermore, the computational power required to render a scene with rasterization scales directly with an increase in the complexity of the scene to be rendered. As image processing becomes more realistic, rendered scenes also become more complex. Therefore, rasterization suffers as image processing evolves, because rasterization scales directly with complexity.
With continued improvements in semiconductor technology in terms of clock speed and increased use of parallelism; however, rasterization becomes viable for more complex images. At the chip level, multiple processor cores are often disposed on the same chip, functioning in much the same manner as separate processor chips, or to some extent, as completely separate computers. In addition, even within cores, parallelism is employed through the use of multiple execution units that are specialized to handle certain types of operations. Hardware-based pipelining is also employed in many instances so that certain operations that may take multiple clock cycles to perform are broken up into stages, enabling other operations to be started prior to completion of earlier operations. Multithreading is also employed to enable multiple instruction streams to be processed in parallel, enabling more overall work to performed in any given clock cycle.
Despite these performance improvements, however, rasterization introduces limits on obtainable performance fundamentally because it requires each and every image frame to be rendered in full from scratch. Many video games, for example, strive for frame rates in excess of 30 or 60 frames per second to ensure that the motion of objects moving in a scene is relatively smooth and realistic. Moreover, this processing overhead is typically unrelated to the amount of a scene that changes from frame to frame, because regardless of whether or not an object in the scene is moving, it is still required to be rendered anew each frame.
For the purposes of the invention, geometry from a scene that does not move from frame to frame, e.g., objects constituting the background of a scene, or objects that are not currently in motion within a scene, is considered to be static. Likewise, geometry from a scene that is in motion, e.g., objects constituting characters, targets, or other objects in motion, is considered to be dynamic.
Due to the presence of static geometry in a scene, conventional rasterization can be highly inefficient. Particularly in scenes where the camera/viewpoint is not moving, most of the static objects in the scene will be rendered exactly the same in each frame, resulting in the exact same image data being regenerated in each of these frames. Thus, in situations where there is limited dynamic geometry in the scene, the vast majority of the image data generated in each frame will be exactly the same as that generated in the prior frame.
Therefore, a need continues to exist in the art for a manner of reducing the processing overhead associated with rasterization.